using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._ServerTools._DataExtraction
{
    /// <summary>
    /// <para>Extract Data and Email Task</para>
    /// <para>Extracts the data in the specified layers and area of interest to the selected format and spatial reference, zips the data, and emails it to the specified address. This tool can be used to create a Data Extraction geoprocessing service.</para>
    /// <para>将指定图层和感兴趣区域中的数据提取到所选格式和空间参考，压缩数据，然后通过电子邮件将其发送到指定地址。此工具可用于创建数据提取地理处理服务。</para>
    /// </summary>    
    [DisplayName("Extract Data and Email Task")]
    public class ExtractDataAndEmailTask : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ExtractDataAndEmailTask()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Layers_to_Clip">
        /// <para>Layers to Clip</para>
        /// <para>The layers to be clipped. Layers must be feature or raster layers in the map's table of contents. Layer files do not work for this parameter.</para>
        /// <para>要裁剪的图层。图层必须是地图内容列表中的要素图层或栅格图层。图层文件不适用于此参数。</para>
        /// </param>
        /// <param name="_Area_of_Interest">
        /// <para>Area of Interest</para>
        /// <para>One or more polygons by which the layers will be clipped.</para>
        /// <para>一个或多个面，用于剪裁图层。</para>
        /// </param>
        /// <param name="_Feature_Format">
        /// <para>Feature Format</para>
        /// <para><xdoc>
        ///   <para>The format in which the output features will be delivered. The string provided should be formatted as follows:
        ///   <bulletList>
        ///     <bullet_item>Name or format - Short Name - extension (if any)  </bullet_item></bulletList>
        ///   </para>
        ///   <para>The hyphen between the components is required, as well as the spaces around the hyphen.</para>
        ///   <para>For example:
        ///   <bulletList>
        ///     <bullet_item>File Geodatabase - GDB - .gdb  </bullet_item><para/>
        ///     <bullet_item>Shapefile - SHP - .shp  </bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DXF_R2007 - .dxf  </bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DWG_R2007 - .dwg  </bullet_item><para/>
        ///     <bullet_item>Bentley Microstation Design (V8) - DGN_V8 - .dgn  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Internally, this tool uses the Export to CAD tool to convert data to the .dgn, .dwg, and .dxf CAD formats. The list of short names supported includes DGN_V8, DWG_R14, DWG_R2000, DWG_R2004, DWG_R2005, DWG_R2007, DWG_R2010, DXF_R14, DXF_R2000, DXF_R2004, DXF_R2005, DXF_R2007, and DXF_R2010.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>输出要素将用于交付的格式。提供的字符串格式应如下所示：
        ///   <bulletList>
        /// <bullet_item>名称或格式 - 短名称 - 扩展名（如果有） </bullet_item></bulletList>
        ///   </para>
        ///   <para>组件之间的连字符以及连字符周围的空格是必需的。</para>
        /// <para>例如：
        ///   <bulletList>
        ///     <bullet_item>文件地理数据库 - GDB - .gdb</bullet_item><para/>
        ///     <bullet_item>形状文件 - SHP - .shp</bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DXF_R2007 - .dxf</bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DWG_R2007 - .dwg</bullet_item><para/>
        ///     <bullet_item>Bentley Microstation Design （V8） - DGN_V8 - .dgn</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>在内部，此工具使用导出到 CAD 工具将数据转换为 .dgn、.dwg 和 .dxf CAD 格式。支持的短名称列表包括 DGN_V8、DWG_R14、DWG_R2000、DWG_R2004、DWG_R2005、DWG_R2007、DWG_R2010、DXF_R14、DXF_R2000、DXF_R2004、DXF_R2005、DXF_R2007 和 DXF_R2010。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Raster_Format">
        /// <para>Raster Format</para>
        /// <para><xdoc>
        ///   <para>The format in which the output raster datasets will be delivered. The string provided should be formatted as follows:
        ///   <bulletList>
        ///     <bullet_item>Name of format - Short Name - extension (if any)  </bullet_item></bulletList>
        ///   </para>
        ///   <para>Any of the following strings will work:
        ///   <bulletList>
        ///     <bullet_item>Esri GRID - GRID  </bullet_item><para/>
        ///     <bullet_item>File Geodatabase - GDB - .gdb  </bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE - IMG - .img  </bullet_item><para/>
        ///     <bullet_item>Tagged Image File Format - TIFF - .tif  </bullet_item><para/>
        ///     <bullet_item>Portable Network Graphics - PNG - .png  </bullet_item><para/>
        ///     <bullet_item>Graphic Interchange Format - GIF - .gif  </bullet_item><para/>
        ///     <bullet_item>Joint Photographics Experts Group - JPEG - .jpg  </bullet_item><para/>
        ///     <bullet_item>Joint Photographics Experts Group - JPEG - .jp2  </bullet_item><para/>
        ///     <bullet_item>Bitmap - BMP - .bmp  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Some of the above raster formats have limitations and not all data can be converted to the format.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>输出栅格数据集的传送格式。提供的字符串格式应如下所示：
        ///   <bulletList>
        /// <bullet_item>格式名称 - 短名称 - 扩展名（如果有） </bullet_item></bulletList>
        ///   </para>
        /// <para>以下任何字符串都有效：
        ///   <bulletList>
        ///     <bullet_item>Esri GRID - GRID</bullet_item><para/>
        ///     <bullet_item>文件地理数据库 - GDB - .gdb</bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE - IMG - .img</bullet_item><para/>
        ///     <bullet_item>标记 图像文件格式 - TIFF - .tif</bullet_item><para/>
        ///     <bullet_item>便携式网络图形 - PNG - .png</bullet_item><para/>
        ///     <bullet_item>图形交换格式 - GIF - .gif</bullet_item><para/>
        ///     <bullet_item>联合图像专家组 - JPEG - .jpg</bullet_item><para/>
        ///     <bullet_item>联合图像专家组 - JPEG - .jp2</bullet_item><para/>
        ///     <bullet_item>位图 - BMP - .bmp</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>上述某些栅格格式存在局限性，并非所有数据都可以转换为该格式。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_To">
        /// <para>To</para>
        /// <para><xdoc>
        ///   <para>The email address of the recipient.</para>
        ///   <para>This tool will be able to email to this address if and only if the SMTP server has been configured within this model.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>收件人的电子邮件地址。</para>
        ///   <para>当且仅当在此模型中配置了 SMTP 服务器时，此工具才能通过电子邮件发送到此地址。</para>
        /// </xdoc></para>
        /// </param>
        public ExtractDataAndEmailTask(List<object> _Layers_to_Clip, object _Area_of_Interest, _Feature_Format_value _Feature_Format, _Raster_Format_value _Raster_Format, object _To)
        {
            this._Layers_to_Clip = _Layers_to_Clip;
            this._Area_of_Interest = _Area_of_Interest;
            this._Feature_Format = _Feature_Format;
            this._Raster_Format = _Raster_Format;
            this._To = _To;
        }
        public override string ToolboxName => "Server Tools";

        public override string ToolName => "Extract Data and Email Task";

        public override string CallName => "server.ExtractDataAndEmailTask";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_Layers_to_Clip, _Area_of_Interest, _Feature_Format.GetGPValue(), _Raster_Format.GetGPValue(), _To, _Sent];

        /// <summary>
        /// <para>Layers to Clip</para>
        /// <para>The layers to be clipped. Layers must be feature or raster layers in the map's table of contents. Layer files do not work for this parameter.</para>
        /// <para>要裁剪的图层。图层必须是地图内容列表中的要素图层或栅格图层。图层文件不适用于此参数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Layers to Clip")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _Layers_to_Clip { get; set; }


        /// <summary>
        /// <para>Area of Interest</para>
        /// <para>One or more polygons by which the layers will be clipped.</para>
        /// <para>一个或多个面，用于剪裁图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Area of Interest")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Area_of_Interest { get; set; }


        /// <summary>
        /// <para>Feature Format</para>
        /// <para><xdoc>
        ///   <para>The format in which the output features will be delivered. The string provided should be formatted as follows:
        ///   <bulletList>
        ///     <bullet_item>Name or format - Short Name - extension (if any)  </bullet_item></bulletList>
        ///   </para>
        ///   <para>The hyphen between the components is required, as well as the spaces around the hyphen.</para>
        ///   <para>For example:
        ///   <bulletList>
        ///     <bullet_item>File Geodatabase - GDB - .gdb  </bullet_item><para/>
        ///     <bullet_item>Shapefile - SHP - .shp  </bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DXF_R2007 - .dxf  </bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DWG_R2007 - .dwg  </bullet_item><para/>
        ///     <bullet_item>Bentley Microstation Design (V8) - DGN_V8 - .dgn  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Internally, this tool uses the Export to CAD tool to convert data to the .dgn, .dwg, and .dxf CAD formats. The list of short names supported includes DGN_V8, DWG_R14, DWG_R2000, DWG_R2004, DWG_R2005, DWG_R2007, DWG_R2010, DXF_R14, DXF_R2000, DXF_R2004, DXF_R2005, DXF_R2007, and DXF_R2010.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>输出要素将用于交付的格式。提供的字符串格式应如下所示：
        ///   <bulletList>
        /// <bullet_item>名称或格式 - 短名称 - 扩展名（如果有） </bullet_item></bulletList>
        ///   </para>
        ///   <para>组件之间的连字符以及连字符周围的空格是必需的。</para>
        /// <para>例如：
        ///   <bulletList>
        ///     <bullet_item>文件地理数据库 - GDB - .gdb</bullet_item><para/>
        ///     <bullet_item>形状文件 - SHP - .shp</bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DXF_R2007 - .dxf</bullet_item><para/>
        ///     <bullet_item>Autodesk AutoCAD - DWG_R2007 - .dwg</bullet_item><para/>
        ///     <bullet_item>Bentley Microstation Design （V8） - DGN_V8 - .dgn</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>在内部，此工具使用导出到 CAD 工具将数据转换为 .dgn、.dwg 和 .dxf CAD 格式。支持的短名称列表包括 DGN_V8、DWG_R14、DWG_R2000、DWG_R2004、DWG_R2005、DWG_R2007、DWG_R2010、DXF_R14、DXF_R2000、DXF_R2004、DXF_R2005、DXF_R2007 和 DXF_R2010。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Feature Format")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Feature_Format_value _Feature_Format { get; set; }

        public enum _Feature_Format_value
        {
            /// <summary>
            /// <para>File Geodatabase - GDB - .gdb</para>
            /// <para>File Geodatabase - GDB - .gdb  </para>
            /// <para>文件地理数据库 - GDB - .gdb</para>
            /// </summary>
            [Description("File Geodatabase - GDB - .gdb")]
            [GPEnumValue("File Geodatabase - GDB - .gdb")]
            value0,

            /// <summary>
            /// <para>Shapefile - SHP - .shp</para>
            /// <para>Shapefile - SHP - .shp  </para>
            /// <para>形状文件 - SHP - .shp</para>
            /// </summary>
            [Description("Shapefile - SHP - .shp")]
            [GPEnumValue("Shapefile - SHP - .shp")]
            value1,

        }

        /// <summary>
        /// <para>Raster Format</para>
        /// <para><xdoc>
        ///   <para>The format in which the output raster datasets will be delivered. The string provided should be formatted as follows:
        ///   <bulletList>
        ///     <bullet_item>Name of format - Short Name - extension (if any)  </bullet_item></bulletList>
        ///   </para>
        ///   <para>Any of the following strings will work:
        ///   <bulletList>
        ///     <bullet_item>Esri GRID - GRID  </bullet_item><para/>
        ///     <bullet_item>File Geodatabase - GDB - .gdb  </bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE - IMG - .img  </bullet_item><para/>
        ///     <bullet_item>Tagged Image File Format - TIFF - .tif  </bullet_item><para/>
        ///     <bullet_item>Portable Network Graphics - PNG - .png  </bullet_item><para/>
        ///     <bullet_item>Graphic Interchange Format - GIF - .gif  </bullet_item><para/>
        ///     <bullet_item>Joint Photographics Experts Group - JPEG - .jpg  </bullet_item><para/>
        ///     <bullet_item>Joint Photographics Experts Group - JPEG - .jp2  </bullet_item><para/>
        ///     <bullet_item>Bitmap - BMP - .bmp  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Some of the above raster formats have limitations and not all data can be converted to the format.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>输出栅格数据集的传送格式。提供的字符串格式应如下所示：
        ///   <bulletList>
        /// <bullet_item>格式名称 - 短名称 - 扩展名（如果有） </bullet_item></bulletList>
        ///   </para>
        /// <para>以下任何字符串都有效：
        ///   <bulletList>
        ///     <bullet_item>Esri GRID - GRID</bullet_item><para/>
        ///     <bullet_item>文件地理数据库 - GDB - .gdb</bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE - IMG - .img</bullet_item><para/>
        ///     <bullet_item>标记 图像文件格式 - TIFF - .tif</bullet_item><para/>
        ///     <bullet_item>便携式网络图形 - PNG - .png</bullet_item><para/>
        ///     <bullet_item>图形交换格式 - GIF - .gif</bullet_item><para/>
        ///     <bullet_item>联合图像专家组 - JPEG - .jpg</bullet_item><para/>
        ///     <bullet_item>联合图像专家组 - JPEG - .jp2</bullet_item><para/>
        ///     <bullet_item>位图 - BMP - .bmp</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>上述某些栅格格式存在局限性，并非所有数据都可以转换为该格式。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Raster Format")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Raster_Format_value _Raster_Format { get; set; }

        public enum _Raster_Format_value
        {
            /// <summary>
            /// <para>ESRI GRID - GRID</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ESRI GRID - GRID")]
            [GPEnumValue("ESRI GRID - GRID")]
            value0,

            /// <summary>
            /// <para>File Geodatabase - GDB - .gdb</para>
            /// <para>File Geodatabase - GDB - .gdb  </para>
            /// <para>文件地理数据库 - GDB - .gdb</para>
            /// </summary>
            [Description("File Geodatabase - GDB - .gdb")]
            [GPEnumValue("File Geodatabase - GDB - .gdb")]
            value1,

            /// <summary>
            /// <para>ERDAS IMAGINE - IMG - .img</para>
            /// <para>ERDAS IMAGINE - IMG - .img  </para>
            /// <para>ERDAS IMAGINE - IMG - .img</para>
            /// </summary>
            [Description("ERDAS IMAGINE - IMG - .img")]
            [GPEnumValue("ERDAS IMAGINE - IMG - .img")]
            value2,

            /// <summary>
            /// <para>Tagged Image File Format - TIFF - .tif</para>
            /// <para>Tagged Image File Format - TIFF - .tif  </para>
            /// <para>标记 图像文件格式 - TIFF - .tif</para>
            /// </summary>
            [Description("Tagged Image File Format - TIFF - .tif")]
            [GPEnumValue("Tagged Image File Format - TIFF - .tif")]
            value3,

            /// <summary>
            /// <para>Graphic Interchange Format - GIF - .gif</para>
            /// <para>Graphic Interchange Format - GIF - .gif  </para>
            /// <para>图形交换格式 - GIF - .gif</para>
            /// </summary>
            [Description("Graphic Interchange Format - GIF - .gif")]
            [GPEnumValue("Graphic Interchange Format - GIF - .gif")]
            value4,

            /// <summary>
            /// <para>Joint Photographics Experts Group - JPEG - .jpg</para>
            /// <para>Joint Photographics Experts Group - JPEG - .jpg  </para>
            /// <para>联合图像专家组 - JPEG - .jpg</para>
            /// </summary>
            [Description("Joint Photographics Experts Group - JPEG - .jpg")]
            [GPEnumValue("Joint Photographics Experts Group - JPEG - .jpg")]
            value5,

            /// <summary>
            /// <para>Joint Photographics Experts Group - JPEG 2000 - .jp2</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Joint Photographics Experts Group - JPEG 2000 - .jp2")]
            [GPEnumValue("Joint Photographics Experts Group - JPEG 2000 - .jp2")]
            value6,

            /// <summary>
            /// <para>Bitmap - BMP - .bmp</para>
            /// <para>Bitmap - BMP - .bmp  </para>
            /// <para>位图 - BMP - .bmp</para>
            /// </summary>
            [Description("Bitmap - BMP - .bmp")]
            [GPEnumValue("Bitmap - BMP - .bmp")]
            value7,

            /// <summary>
            /// <para>Portable Network Graphics - PNG - .png</para>
            /// <para>Portable Network Graphics - PNG - .png  </para>
            /// <para>便携式网络图形 - PNG - .png</para>
            /// </summary>
            [Description("Portable Network Graphics - PNG - .png")]
            [GPEnumValue("Portable Network Graphics - PNG - .png")]
            value8,

        }

        /// <summary>
        /// <para>To</para>
        /// <para><xdoc>
        ///   <para>The email address of the recipient.</para>
        ///   <para>This tool will be able to email to this address if and only if the SMTP server has been configured within this model.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>收件人的电子邮件地址。</para>
        ///   <para>当且仅当在此模型中配置了 SMTP 服务器时，此工具才能通过电子邮件发送到此地址。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("To")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _To { get; set; }


        /// <summary>
        /// <para>Send Email Succeeded</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Send Email Succeeded")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _Sent { get; set; }


        public ExtractDataAndEmailTask SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}